package fiuba.algo3;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class GeneradorAleatorio {

	public static List<Integer> generarNValoresAleatorios(int cantidadValores, int cantidadPosibilidades){
		// Devuelve una lista de cantidadValores enteros, todos pertenecen a 
		// [0, cantidadPosibilidades).
		List<Integer> listaAleatoria = new ArrayList<Integer>();
		int i, tamanio;
		
		if (cantidadValores > cantidadPosibilidades){
			// Tirar error!
		}
		
		for (tamanio=0; tamanio<cantidadValores; ){
			i = (int)(Math.random()*cantidadPosibilidades);
			if (! (listaAleatoria.contains(i) )){
				listaAleatoria.add(i);
				tamanio = tamanio + 1;
			}
		}
		
		return listaAleatoria;
	}
	
	public static List<Integer> generarNValoresAleatoriosRestringidos(int cantidadValores, int cantidadPosibilidades, Set<Integer> valoresProhibidos){
		List<Integer> listaAleatoria = new ArrayList<Integer>();
		int i, tamanio;
		
		if (cantidadValores + valoresProhibidos.size() > cantidadPosibilidades){
			// Tirar error!
		}
		
		for (tamanio=0; tamanio<cantidadValores; ){
			i = (int)(Math.random()*cantidadPosibilidades);
			if ( (! (listaAleatoria.contains(i))) && (! (valoresProhibidos.contains(i))) ){
				listaAleatoria.add(i);
				tamanio = tamanio + 1;
			}
		}
		
		return listaAleatoria;
	}
	
}
